﻿
using Lt.Engine.Sampling;
using RayDen.Library.Components;
using RayDen.Library.Components.Color;
using RayDen.Library.Core.Primitives;

namespace Lt.Engine.Entity
{
    public abstract class AbstractLightsource : ILightsource
    {
        public abstract bool IsDelta { get; }

        public abstract bool IsFinite { get; }


        public int ProfileId
        {
            get { return profileId; }
        }

        protected int profileId;

        public abstract IRadianceEvaluation Le(ref Point position, ref Vector direction, out float emissionPdf,
            out float directPdf);


        public abstract IRadianceEvaluation Illuminate(ref SceneSphere aSceneSphere, ref Point position, float u, float v,
            out LightSample lightSample);

        public abstract IRadianceEvaluation Emit(ref SceneSphere aSceneSphere, float dirU, float dirV, float posU,
            float posV, out Point oPosition, out LightSample lightSample);

    }



}
